Модуль:Tree
local p = {} local arrData = mw.loadData( 'Module:DataTree' ) local id = "" --Список деревьев--* function p.list(frame) local tp = frame.args1 local data=getitems() local width=50 local root = mw.html.create( 'table' ) :addClass( 'crop' ) :addClass( 'sortable' ) :attr('cellpadding', '0') :attr('cellspacing', '0') local trhead = root:tag('tr') trhead:tag('th'):wikitext('Уровень') trhead:tag('th'):wikitext('Название') trhead:tag('th'):wikitext('Покупка 15px') trhead:tag('th'):wikitext('Плоды') trhead:tag('th'):wikitext('Продажа 15px') trhead:tag('th'):wikitext('Рост, часы') trhead:tag('th'):wikitext('Доход в час 15px') if tp "all" then trhead:tag('th'):wikitext('Категория') end trhead:tag('th'):wikitext('Локация') trhead:tag('th'):wikitext('Домик агронома') local j=0 for i, v in ipairs(data) do if tp 'all'or v.tp tp then trbody =root:tag('tr') trbody:tag('td') :css('text-align', "center") :css('width', width+2) :wikitext(v.level..''..width..'px|center') trbody:tag('td') :wikitext(''..v.name..'') trbody:tag('td') :css('text-align', 'center') :wikitext(v.buy) trbody:tag('td') :css('text-align', 'center') :wikitext(v.prod) trbody:tag('td') :css('text-align', 'center') :wikitext(v.sell) trbody:tag('td') :css('text-align', 'center') :wikitext(v.tm) trbody:tag('td') :css('text-align', 'center') :wikitext(v.rez) if tp "all" then trbody:tag('td') :wikitext(''..v.tp..'') end trbody:tag('td') :wikitext(v.location) trbody:tag('td') :wikitext(v.agronom) j=j+1 end end local caption = root:tag('caption') :css('text-align', 'left') :wikitext("Всего: "..j) return tostring( root ) end function path() local root = mw.html.create( 'div' ) :css('font-size', '12px') :css('margin-bottom', '10px') :wikitext('[['..arrDataid.tp1..']] / [['..arrDataid.tp..']] / '..id) return tostring( root ) end function infobox() local text=' '.. ' '..id..' '.. ' center '.. ' '.. ' '.. ' Категория '.. ' [['..arrDataid.tp..']] '.. ' '.. ' '.. ' Продукт '.. ' ' if arrDataid.nameprod '' then text=text..id else text=text..arrDataid.nameprod..' ��' end text=text..' '.. ' '.. ' '.. ' Рост, часы '.. ' '..arrDataid.tm..' �� '.. ' '.. ' '.. ' Локация '.. ' ' if pcall(function () if arrDataid.location nil then error() end end) then text=text..'[['..arrDataid.location..']]' else text=text..'Любая' end text=text..' '.. ' '.. ' '.. ' '.. ' Цена '.. ' ' text=text..' Покупка '.. ' ' if arrDataid.buy~=0 then text=text..arrDataid.buy..' 15px' else if pcall(function () if arrDataid.buyagro nil then error() end end) then text=text..arrDataid.buyagro..' 15px' end end text=text..' '.. ' '.. ' '.. ' Продажа '.. ' '..arrDataid.sell..' 15px'.. ' '.. ' '.. ' '.. ' '.. ' Доход '.. ' '.. ' Доход в час '.. ' ' if arrDataid.tm~=0 and arrDataid.sell~=0 then text=text..(math.floor(arrDataid.sell/arrDataid.tm*100)/100)..' ��' else text=text..'' end text=text..' '.. ' '.. ' '.. ' ' return text end function description() local text='' text=' Описание ' if arrDataid.nameprod '' then nameprod=id else nameprod=arrDataid.nameprod end text=text..' 50px '.. ' Дерево сажается один раз, а урожай с него можно собирать многократно. '.. ' Собрать урожай можно только после того, как он достигнет зрелости (100%). У каждого дерева свое индивидуальное время роста. Наведите курсор мышки на дерево и увидите, сколько времени осталось до сбора урожая. '.. ' Для сбора урожая щелкните мышкой по дереву, крона дерева изменится (станет чуть поменьше размером или опустеет), а плоды дерева автоматически переместятся на склад. '.. ' Собранный урожай можно продать, переработать на фабрике или скормить животным. '.. ' Время созревания плодов составляет �� '..arrDataid.tm..' час., при этом ваш доход в час составляет ' if arrDataid.tm~=0 and arrDataid.sell~=0 then text=text..(math.floor(arrDataid.sell/arrDataid.tm*100)/100) else text=text..'' end text=text..' 15px. '.. ' Покупка ('..id..') Продажа ('..nameprod..') ' text=text..' ' if arrDataid.buy~=0 then text=text..' '..arrDataid.buy..' 15px ' else if pcall(function () if arrDataid.buyagro nil then error() end end) then text=text..' '..arrDataid.buyagro..' 15px ' end end text=text..' '..arrDataid.sell..' 15px ' if arrDataid.tm~=0 and arrDataid.buyagro 0 and arrDataid.sell~=0 then text=text..' Покупка дерева окупится через '..(math.floor(arrDataid.buy/arrDataid.sell*arrDataid.tm/24*100)/100)..' дней, для этого нужно снять '..(math.floor(arrDataid.buy/arrDataid.sell*100)/100)..' урожаев. ' elseif pcall(arrDataid.buyagro) and arrDataid.buyagro>0 then text=text..' Окупаемость дерева вычислить нельзя, т.к. дерево покупается за агробаксы. ' end if arrDataid.exper~=0 then text=text..' После посадки дерева вы получаете '..arrDataid.exper..' . ' end text=text..' Если лерево мешается в том месте, где вы его посадили, его можно передвинуть на другое, более удобное место, или удалить с игрового поля. ' if arrDataid.del~=0 then text=text..' При удалении дерева вы получаете '..arrDataid.del..' 15px. ' end text=text..' Посадить дерево можно в любой зоне: Поле, Промзона, Зона декора. ' return text end function getitems() local data={} local i=1 for key, v in pairs(arrData) do datai={name=v.name, tm=v.tm,buy=v.buy,sell=v.sell,tp=v.tp} if v.level 0 then datai.level='' else datai.level="c "..v.level.." ур. " end if v.buy 0 then datai. buy='' else datai. buy=v.buy end if v.tm 0 then datai.tm='' else datai.tm=v.tm end if v.sell 0 then datai.sell='' datai.rez='' else datai.sell=v.sell datai.rez=math.floor(v.sell/v.tm*100)/100 end datai.prod=(v.nameprod '') and v.name or v.nameprod if v.location '' then datai.location='Любые' else datai.location=''..v.location..'' end if pcall(function () if v.agronom nil then error() end end) then datai.agronom='Домик агронома' else datai.agronom='' end i=i+1 end table.sort(data,function( a, b ) return a.name < b.name end ) return data end --Карточка растения (дерево) новая-- function placeBuy() local root = mw.html.create( 'div' ) root:tag('h2') :wikitext('Место покупки растения') root:tag('div') :wikitext(arrDataid.agronom and agronom(id) or 'Саженцы этого дерева продается в Магазине.') return tostring(root) end function location() local root = mw.html.create( 'div' ) root:tag('h2') :wikitext('Локация') root:tag('div') :wikitext(arrDataid.location and 'Можно выращивать только в локации [['..arrDataid.location..']].' or'Можно выращивать в любой локации.') return tostring(root) end function experience() local root = mw.html.create( 'div' ) root:tag('h2') :wikitext('Опыт') root:tag('div') :wikitext('За посадку и сбор урожая 1 единицы растения начисляется опыт, который необходим для перехода к следующему уровню игры.') return tostring(root) end function medal() local root = mw.html.create( 'div' ) root:tag('h2') :wikitext('Медали') root:tag('div') :wikitext('За сбор урожая даются медали. Медали позволяют увеличить количество опыта за сбор 1 единицы растения.') return tostring(root) end function p.getView( frame ) id = frame.args1 return path().. infobox().. description().. placeBuy().. location().. ' Загружается на фабрики '..(require("Module:Factory").fab(nameprod)).. ' Можно скормить животным '..(require("Module:Animal").fab(nameprod)).. experience().. medal().. 'Category:Семена'.. '[[Category:'..arrDataid.tp..']]' end --Карточка растения (дерево) старая-- function p.tree( frame ) local id = frame.args1 local text='' text=text..' [['..arrDataid.tp1..']] / [['..arrDataid.tp..']] / '..id..' '.. ' Общие сведения '.. ' 200px '.. ' '..id..' ' if arrDataid.nameprod '' then nameprod=id else nameprod=arrDataid.nameprod end text=text..' 50px '..nameprod..' ' text=text..' Рост: �� '..arrDataid.tm..' час., доход: ' if arrDataid.tm~=0 and arrDataid.sell~=0 then text=text..(math.floor(arrDataid.sell/arrDataid.tm*100)/100) else text=text..'-' end text=text..' 15px в час '.. ' Покупка ('..id..') Продажа ('..nameprod..') ' text=text..' ' if arrDataid.buy~=0 then text=text..' '..arrDataid.buy..' 15px ' else if pcall(function () if arrDataid.buyagro nil then error() end end) then text=text..' '..arrDataid.buyagro..' 15px ' end end text=text..' '..arrDataid.sell..' 15px ' if arrDataid.tm~=0 and arrDataid.buyagro 0 and arrDataid.sell~=0 then text=text..' Покупка дерева окупится через '..(math.floor(arrDataid.buy/arrDataid.sell*arrDataid.tm/24*100)/100)..' дней, для этого нужно снять '..(math.floor(arrDataid.buy/arrDataid.sell*100)/100)..' урожаев. ' elseif pcall(arrDataid.buyagro) and arrDataid.buyagro>0 then text=text..' Окупаемость дерева вычислить нельзя, т.к. дерево покупается за агробаксы. ' end if arrDataid.exper~=0 then text=text..' После посадки дерева вы получаете '..arrDataid.exper..' . ' end if arrDataid.del~=0 then text=text..' При удалении дерева вы получаете '..arrDataid.del..' 15px. ' end text=text..' Можно выращивать в поле, промзоне и зоне декора. '.. ' '.. ' Место покупки растения ' local ok, msg = pcall(function () if arrDataid.agronom nil then error() end text=text..' Создается в Домике агронома. ' end) if not ok then text=text..' Продается в Магазине. ' end text=text..' Локация ' if arrDataid.location '' then text=text..' Можно выращивать в любой локации. ' else text=text..' Можно выращивать только в локации "'..arrDataid.location..'". ' end --Список фабрик, на которые можно загрузить деревья-- text=text..' Загружается на фабрики '..(require("Module:Factory").fab(nameprod)).. ' Можно скормить животным '..(require("Module:Animal").fab(nameprod)).. 'Category:Семена'.. '[[Category:'..arrDataid.tp..']]' return text end function agronom(id) --Подготовка списка с ценой продажи деревеьев-- local data={} local n for key, v in pairs(arrData) do n=(v.nameprod '') and v.name or v.nameprod datan={sell=v.sell,name=v.name} end local text=' Семена этого растения создаются в Домике агронома. ' if not pcall(function () if arrDataid.create nil then error() end end) then return text end text=text..' Исследование семян '.. ' Сначала в Домике агронома проводится исследование, для которого потребуется: ' local td1="" local td2="" local td3="" for key, v in pairs(arrDataid.create) do if pcall(function () if datav.name.name nil then error() end end) then td1=td1..' [['..datav.name.name..'|'..v.name..']] ' else td1=td1..' '..v.name..' ' end td2=td2..' ' td3=td3..' '..v.c if v.name~='Монеты' then td3=td3..' шт.' end if pcall(function () if datav.name.sell nil then error() end end) then td3=td3..' x '..datav.name.sell..' 15px = '..datav.name.sell*v.c..' 15px' end td3=td3..' ' end text=text.. ' '..td1..' '.. ' '..td2..' '.. ' '..td3..' '.. ' '.. ' Как видно из таблицы, первые два ингредиента для исследования ([['..data[arrDataid.create1.name].name..']] и [['..data[data[arrDataid.create2.name].name].name..']]) – это плоды деревьев. Найти плоды можно на складе (если, конечно, у вас на ферме посажены такие деревья). '.. ' Третий ингредиент для исследования – ([['..arrDataid.create3.name..']]) – материал. Обычно материалы покупаются за агробаксы. Но материалы для исследования в Домике агронома можно также получить бесплатно у друзей. Для этого нажмите синий плюсик 15px в правом верхней углу картинки с материалом, откроется окошко с названием материала: '.. '[[Файл:'..arrDataid.create3.name..'material1.png|200px|center]]' text=text..' нажмите в окошке кнопку «Попросить». После этого ваши друзья смогут совершенно бесплатно отправить вам необходимый материал. '.. ' Как только ваши друзья передадут вам достаточное количество материала, вместо синего плюсика в углу вы увидите зеленую галочку 15px. '.. ' Все ингредиенты собраны – можно начинать исследование. Нажмите на зеленую кнопку «Исследовать». ' text=text..' Время исследования: '..arrDataid.createtm..' час. '.. ' Исследование проводится только один раз - чтобы разблокировать создание семян. '.. ' Создание семян '.. ' Когда исследование закончено, можно начинать создавать семена. Для создания 1 единицы семян потребуется: '.. ' ' text=text..' ' local td1="" local td2="" local td3="" for key, v in pairs(arrDataid.agronom) do if pcall(function () if datav.name.name nil then error() end end) then td1=td1..' [['..datav.name.name..'|'..v.name..']] ' else td1=td1..' '..v.name..' ' end td2=td2..' ' td3=td3..' '..v.c if v.name~='Монеты' then td3=td3..' шт.' end if pcall(function () if datav.name.sell nil then error() end end) then td3=td3..' x '..datav.name.sell..' 15px = '..datav.name.sell*v.c..' 15px' end td3=td3..' ' end text=text.. ' '..td1..' '.. ' '..td2..' '.. ' '..td3..' '.. ' '.. require("Module:Gallery").Gallery(id..'agronom',3) return text end return p